#!/bin/bash

# 文件名：disable_gnome_automount.sh
# 功能：
# 本脚本用于禁用 GNOME 的自动挂载功能，以防止插入存储设备时系统自动挂载。
# 并提供使配置生效的不同方式，用户可选择立即注销、重启计算机或重启 GNOME。
#
# 主要流程：
# 1. 逐个禁用 org.gnome.desktop.media-handling 下的 automount 和 automount-open 设置。
# 2. 提示用户可以选择的生效方式，如注销、重启等。
# 3. 询问用户是否立即注销以使设置生效。
# 4. 通过信号处理，确保用户中断时提供适当的反馈。
#
# 注意事项：
# - 需要 GNOME 桌面环境，且 `gsettings` 可用。
# - 需要适当的用户权限，建议以当前用户身份运行。
# - 用户可手动执行 `gsettings get` 命令检查当前设置状态。

set -eo pipefail

SCHEMA="org.gnome.desktop.media-handling"
SETTINGS=("automount" "automount-open")

apply_settings() {
    for setting in "${SETTINGS[@]}"; do
        if ! gsettings set "$SCHEMA" "$setting" false; then
            echo "❌ 配置失败: $setting" >&2
            exit 1
        fi
        echo "✅ 已禁用: $setting"
    done
}

show_activation_methods() {
    cat <<EOF

ℹ️  生效方法（任选其一）：
1. 立即注销（推荐）：
   gnome-session-quit --no-prompt

2. 重启计算机（彻底生效）：
   sudo reboot

3. 快速重启 GNOME（图形界面操作）：
   Alt+F2 → 输入 r → 回车
EOF
}

main() {
    echo "正在禁用 GNOME 自动挂载功能..."
    apply_settings

    echo -e "\n✅ 配置成功！建议立即注销使设置生效"
    read -p "➜ 是否立即注销并重新登录？[y/N] " choice

    case "$choice" in
        y|Y)
            echo "正在启动注销进程..."
            gnome-session-quit --no-prompt
            ;;
        *)
            echo -e "\n您可以选择以下方式使设置生效："
            show_activation_methods
            ;;
    esac
}

trap 'echo -e "\n❌ 操作被中断"; exit 2' INT TERM

main
